//$Id:PageUtil.java 2010-1-4 上午10:43:46
package com.walllee.core.util;

/**
 * 
 * 
 * @author Wall.Lee(xiaoshan2242@gmail.com)
 */
public class PageUtil {
	
	/**
	 * 获取真实的页数 
	 * @param pages
	 * @param rows
	 * @param pagesize
	 * @return
	 */
	public static int getRealCurePage(int page, int rows, int pagesize) {
		int pages = rows / pagesize;
		if (rows % pagesize > 0)
			pages++;

		if (page < 1)
			return 1;
		if (page > pages)
			return pages;
		return page;

	}

	/**
	 * 将记录的索引数转换成页码
	 * 
	 * @param indexs			记录的索引，注意：编号从0开始
	 * @param pageSize
	 * @return
	 */
	public static int index2Page(int indexs, int pageSize) {
		int pages = indexs / pageSize;
		if (indexs % pageSize >= 0)
			pages++;
		return pages;
	}

	/**
	 * 将页码转变成记录开始的索引数
	 * 
	 * @param totalCount
	 * @param pages
	 * @param pageSize
	 * @return
	 */
	public static int page2Index(int totalCount, int pages, int pageSize) {
		int pageCount = index2Page(totalCount, pageSize);
		if (pages < 1)
			return 0;
		if (pageCount < pages)
			return (pageCount - 1) * pageSize;
		else
			return (pages - 1) * pageSize;
	}

	/**
	 * 将字符形式的页码转变成数字的页码
	 * 
	 * @param pages
	 * @return
	 */
	public static int getPageNum(String pages) {
		int return_num;
		if ("null".equalsIgnoreCase(pages)) {
			return 1;
		}
		try {
			return_num = Integer.parseInt(pages);
		} catch (NumberFormatException e) {
			return_num = 1;
		}
		return return_num;
	}

	/**
	 * 获取记录数的sql语句
	 * 
	 * @param sql
	 * @return
	 */
	public static String getRecordCountSql(String sql) {
		StringBuilder sb = new StringBuilder();
		sb.append("select count(*) from ");
		sb.append("(").append(sql).append(") a");
		return sb.toString();
	}
}
